package com.wgy.day35函数式接口和Lambda.使用lambda作为方法的参数和返回值;

import java.util.Arrays;
import java.util.Comparator;

/*
如果一个方法的返回值是一个函数式接口,那么就可以直接使用Lambda表达式
当需要通过一个方法来获取一个java.util.Comparator接口类型的对象作为排序器时,就可以调该方法获取
Comparator
*/
public class Demo02Comparator {
    public static void main(String[] args) {
        String[] arr={"aaa","b","cc","dddd","k"};
        Arrays.sort(arr,getComparator());
        System.out.println(Arrays.toString(arr));
    }



    public static Comparator<String> getComparator(){
        //方法的返回值Comparator<String>是一个接口,可以返回这个接口的匿名内部类
 /*       return new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                //按照字符串的降序排序
                return o2.length()-o1.length();
            }
        };
 */
/*
        //方法的返回值Comparator<String>是一个函数式接口,可以返回Lambda表达式
        return (String o1, String o2)->{
            return o2.length()-o1.length();
        };
*/
        //方法的返回值Comparator<String>是一个函数式接口,可以返回Lambda表达式省略格式
        return (o1, o2)->o2.length()-o1.length();

    }


}
